/**
 * 学习位运算
 *
 * @author lenovo
 * @version 1.0
 * @date 2023/4/15 9:19
 */

public class LearnOptions2 {

    public static void main(String[] args) {
        //正整数有符号与无符号右移是相同的
        System.out.println(3>>>1);
        System.out.println(6>>1);
        //负数
        //补码转换为原码：符号位不变，数值位按位取反，末位在加一即补码的补码等于原码
        //-3原码10000011 11111101补码
        System.out.println(-3>>1);
        //有符号右移

        System.out.println(-5 >> 2) ;
        System.out.println(-23 >> 3) ;
        //有符号的负数右移（符号位参与运算）
        System.out.println(-3 >>> 1);
        //10000011原码
        //11111101补码
        //01111110
        System.out.println(2&3);
        //&相同位数为1则为1
        //|相同位数有一个为一则为1
        //^相同位数不相同为1，相同为0
        System.out.println(18&27);
        System.out.println(~2);
        //!取返
        int a=9;
        //&& 短逻辑与 一假为假 全真为真
        //||短逻辑或 一真为真
        System.out.println(a++>3 && a++>4);
        System.out.println(a);
        short xj=1;
        xj+=1;
        xj=(short) (xj+1);
        System.out.println(xj);


    }
}
